#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <stdlib.h>

//memcpy
// 
//int main()
//{
//	int arr1[30] = { 0 };
//	int arr2[] = { 1,2,3,4,5,6,7,8 };
//	int* p = (int*)memcpy(arr1, arr2 + 3,5*sizeof(int));
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", p[i]);
//	}
//
//	return 0;
//}

//int main()
//{
//	char arr1[30] = "xxxxxxxxxxxxx";
//	char arr2[] = "fufu\0 666";
//	memcpy(arr1, arr2, 6);
//	printf("%s", arr1);
//
//	return 0;
//}

//void* my_memcpy(void* arr1, const void* arr2, size_t n)
//{
//	assert(arr1 && arr2);
//	void* s = arr1;
//	while(n--)
//	{
//		*(char*)arr1 = *(char*)arr2;
//		 arr1 = (char*)arr1 + 1;
//		 arr2 = (char*)arr2 + 1;
//	}
//	return s;
//}
//
//int main()
//{
//	int arr1[10] = { 0 };
//	int arr2[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = (int*)my_memcpy(arr1, arr2, 5 * sizeof(int));
//	int i = 0;
//	for(i = 0; i < 10; i++)
//	{
//		printf("%d ", p[i]);
//	}
//
//	return 0;
//}

//memmove
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	memmove(arr + 3, arr, 5 * sizeof(int));
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}

//void* my_memmove(void* arr1, const void* arr2, size_t n)
//{
//	assert(arr1 && arr2);
//	if (arr1 < arr2)
//	{
//		while (n--)
//		{
//			*(char*)arr1 = *(char*)arr2;
//			arr1 = (char*)arr1 + 1;
//			arr2 = (char*)arr1 + 2;
//		}
//	}
//	else
//	{
//		while (n--)
//		{
//			*((char*)arr1 + n) = *((char*)arr2 + n);
//		}
//	}
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	my_memmove(arr + 3, arr, 5 * sizeof(int));
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}


int main()
{
	int arr1[] = { 0x11223344,2,3,4,5,6,7,8,9,10 };
	int arr2[] = { 0x55,2,3,4,8 };
	int ret = memcmp(arr1, arr2, 17);
	printf("%d\n", ret);//-1

	return 0;
}